
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;

public class CompararCoches implements Comparable<CompararCoches> {

	private int numeSerie;
	private String marca;
	private int pesoKg;

	public CompararCoches(int i, String string, int j) {
		numeSerie = i;
		marca = string;
		pesoKg = j;
	}

	@Override
	public int compareTo(CompararCoches c) {
		final int BEFORE = -1;
		final int EQUAL = 0;
		final int AFTER = 1;

		if (this.numeSerie < c.numeSerie)
			return BEFORE;
		else if (this.numeSerie > c.numeSerie)
			return AFTER;
		else if (this.marca.compareTo(c.marca) < 0)
			return BEFORE;
		else if (this.marca.compareTo(c.marca) > 0)
			return AFTER;

		else
			return EQUAL;

	}

	@Override
	public String toString() {
		return ("[" + numeSerie + ", " + marca + ", " + pesoKg + "]");
	}

	public static void main(String[] args) {
		ArrayList<Integer> listaEnteros = new ArrayList<Integer>();
		ArrayList<String> listaString = new ArrayList<String>();
		Set<Persona> listaPersona = new TreeSet<Persona>();

		listaEnteros.add(10);
		listaEnteros.add(2);
		listaEnteros.add(3);
		listaEnteros.add(1);
		listaEnteros.add(5);

		Collections.sort(listaEnteros);

		for (Integer i : listaEnteros)
			System.out.println(i);

		listaString.add("carlos");
		listaString.add("ana");
		listaString.add("carlos");
		listaString.add("eva");
		listaString.add("judith");

		Collections.sort(listaString);

		for (String s : listaString)
			System.out.println(s);

		listaPersona.add(new Persona("carlos", "fernandez", "tessier"));
		listaPersona.add(new Persona("beatriz", "fernandez", "alvarez"));
		listaPersona.add(new Persona("ana", "fernandez", "tessier"));
		listaPersona.add(new Persona("jose", "amez", "suarez"));

		for (Persona p : listaPersona) {
			System.out.println(p.toString());

		}

		Set<CompararCoches> lista = new TreeSet<CompararCoches>();
		CompararCoches C1 = new CompararCoches(1, "Ford", 1000);
		CompararCoches C2 = new CompararCoches(50, "VW", 1500);

		lista.add(C2);
		lista.add(C1);

		// for(int i=0; i< lista.size();i++)
		for (CompararCoches coche : lista) {
			System.out.println(coche.toString());

		}
	}

	static class Persona implements Comparable<Persona> {

		private String nombre;
		private String apellido;
		private String apellido2;

		public Persona(String nombre, String apellido, String apellido2) {

			this.nombre = nombre;
			this.apellido = apellido;
			this.apellido2 = apellido2;
		}

		@Override
		public int compareTo(Persona c) {
			final int BEFORE = -1;
			final int EQUAL = 0;
			final int AFTER = 1;

			if (this.apellido.compareTo(c.apellido) < 0)
				return BEFORE;
			else if (this.apellido.compareTo(c.apellido) > 0)
				return AFTER;
			else if (this.apellido2.compareTo(c.apellido2) < 0)
				return BEFORE;
			else if (this.apellido2.compareTo(c.apellido2) > 0)
				return AFTER;
			else if (this.nombre.compareTo(c.nombre) < 0)
				return BEFORE;
			else if (this.nombre.compareTo(c.nombre) > 0)
				return AFTER;
			else
				return EQUAL;

		}

		@Override
		public String toString() {
			return (apellido + " " + apellido2 + ", " + nombre);
		}
	}

}